package com.jxdinfo.hussar.example.rypxjhgl.pxjhgllhx1.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jxdinfo.hussar.workflow.engine.response.BpmResponseResult;
import com.jxdinfo.hussar.example.rypxjhgl.pxjhgllhx1.model.Pxjhgllhx1;
import com.alibaba.fastjson.JSONObject;
import com.jxdinfo.hussar.example.rypxjhgl.pxjhgllhx1.dto.Pxjhgllhx1Dto;
import com.jxdinfo.hussar.example.rypxjhgl.pxjhgllhx1.vo.Pxjhgllhx1PageVO;
import com.jxdinfo.hussar.example.rypxjhgl.pxjhgllhx1.dto.Pxjhgllhx1Pxjhgllhx1dataset1;
import com.jxdinfo.hussar.platform.core.base.apiresult.ApiResponse;

/**
 * 培训计划管理lhx1服务类
 */
public interface Pxjhgllhx1Service {

    /**
     * 培训计划管理lhx1表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQueryPage(Page<Pxjhgllhx1> page);

    /**
     * 培训计划管理lhx1表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQueryPage_order_custom(Page<Pxjhgllhx1> page);

    /**
     * 培训计划管理lhx1表格查询（带分页）
     *
     * @param pxjhgllhx1dataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQuerypxjhgllhx1Condition_1Page(Pxjhgllhx1Pxjhgllhx1dataset1 pxjhgllhx1dataset1);

    /**
     * 培训计划管理lhx1表格查询（带分页）
     *
     * @param pxjhgllhx1dataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQuerypxjhgllhx1Condition_1Page_order_custom(Pxjhgllhx1Pxjhgllhx1dataset1 pxjhgllhx1dataset1);

    /**
     * 培训计划管理lhx1流程列表批量物理删除
     */
    ApiResponse<String> flowTableDeleteBatch(String ids);

    /**
     * 批量删除流程实例
     */
    ApiResponse<String> deleteProcessInstanceList(String ids);

    /**
     * 培训计划管理lhx1流程表格修改
     */
    ApiResponse<JSONObject> flowTableUpdate(Pxjhgllhx1Dto pxjhgllhx1Dto);

    /**
     * 培训计划管理lhx1流程列表物理删除
     */
    ApiResponse<String> flowTableDelete(String id);

    /**
     * 培训计划管理lhx1流程列表物理删除(仅删除未启动流程和节点处于第一节点的流程)
     */
    ApiResponse<String> flowTableDeleteUnStart(String id);

    /**
     * 获取流程状态
     */
    BpmResponseResult getValidateResult(String id);

    /**
     * 删除流程实例
     */
    ApiResponse<String> deleteProcessInstance(String id);

    /**
     * 培训计划管理lhx1表格查询
     *
     * @param pxjhgllhx1dataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQuerypxjhgllhx1Condition_1(Pxjhgllhx1Pxjhgllhx1dataset1 pxjhgllhx1dataset1);

    /**
     * 培训计划管理lhx1表单查询
     */
    ApiResponse<Pxjhgllhx1> formQuery(String id);

    /**
     * 提交流程表单(优先提交至驳回节点)时操作业务表数据
     */
    String formsubmitreject(Pxjhgllhx1Dto pxjhgllhx1Dto, String businessKey);

    /**
     * 培训计划管理lhx1提交流程表单(优先提交至驳回节点)
     */
    ApiResponse<String> flowFormSubmitReject(Pxjhgllhx1Dto pxjhgllhx1Dto);

    /**
     * 提交流程表单时操作业务表数据
     */
    void formsubmit(Pxjhgllhx1Dto pxjhgllhx1Dto, String businessKey);

    /**
     * 培训计划管理lhx1提交流程表单
     */
    ApiResponse<String> flowFormSubmit(Pxjhgllhx1Dto pxjhgllhx1Dto);

    /**
     * 培训计划管理lhx1保存流程表单
     */
    ApiResponse<String> flowFormSaveStart(Pxjhgllhx1Dto pxjhgllhx1Dto);

    /**
     * 启动流程实例
     */
    ApiResponse<String> startSaveProcessInstance(String processDefinitionKey, String businessKey);

    /**
     * 培训计划管理lhx1新增或修改
     */
    ApiResponse<String> insertOrUpdate(Pxjhgllhx1 pxjhgllhx1);

    /**
     * 培训计划管理lhx1表格查询
     *
     * @return 查询结果
     */
    ApiResponse<Pxjhgllhx1PageVO> hussarQuery();
}
